package com.carpedil.shirodemo.common.util;

import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class WebUtil {
  /** 是否是Ajax请求 */
  public static boolean isAjaxRequest(HttpServletRequest request) {
    String requestedWith = request.getHeader("x-requested-with");
    return "XMLHttpRequest".equalsIgnoreCase(requestedWith);
  }

  /** 输出JSON */
  public static void writeJson(Object object, ServletResponse response) {
    PrintWriter out = null;
    try {
      response.setCharacterEncoding("UTF-8");
      response.setContentType("application/json; charset=utf-8");
      out = response.getWriter();
      ObjectMapper objectMapper = new ObjectMapper();
      out.write(objectMapper.writeValueAsString(object));
    } catch (IOException e) {
      e.printStackTrace();
    } finally {
      if (out != null) {
        out.close();
      }
    }
  }

  public static void redirectUrl(String redirectUrl) {
    HttpServletResponse response =
        ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
    try {
      response.sendRedirect(redirectUrl);
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  /**
   * 获取当前请求的 Http Method
   *
   * @return
   */
  public static String getRequestHTTPMethod() {
    HttpServletRequest request =
        ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
    return request.getMethod();
  }
}
